﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using RzCorportativo.Lib;

namespace RzCorportativo.Views.Cadastros
{
    [Lib.Permissao(HasValidation = true)]
    public partial class Vagas : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        [WebMethod]
        public static List<Lib.Vaga> Listar()
        {
            return Lib.Vaga.Listar(new Lib.Vaga()
            {
                UsuarioId = AppSession.Login != null ? 
                                AppSession.Login.TipoLogin == Lib.TipoLogin.Interno ? 
                                0 :
                                AppSession.Login.Usuario != null ? 
                                    AppSession.Login.Usuario.UsuarioId : 0
                            : 0
            }).Where( w=> w.Status < 2).OrderByDescending(o => o.DataCadastro).ToList();
            //AppSession.Login == null || AppSession.Login.TipoLogin == TipoLogin.Interno ? true : 
        }

        [WebMethod]
        public static object Fechar(long vagaId)
        {
            try
            {
                Lib.Vaga vaga = Lib.Vaga.Create(vagaId);
                vaga.Ativo = false;
                vaga.Status = 2;
                string erros = string.Empty;
                if (vaga.VagaId == -1)
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Código de vaga inválido";
                if ((AppSession.Login.Usuario ?? new Lib.Usuario()).UsuarioId.Equals(0))
                    erros += (erros.Length > 0 ? ";" : string.Empty) + "Usuário inválida, favor fazer login novamente";

                if (erros.Length > 0)
                    return new
                    {
                        AlertType = 1,
                        Messages = erros.Split(';'),
                        Show = true,
                        Value = 0
                    };

                if (vaga.Salvar())
                {
                    Lib.Login.Listar(new Lib.Login() { TipoLogin = TipoLogin.Interno }).ForEach(a =>
                    {
                        try
                        {
                            a.Notificar(new Notificacao()
                            {
                                TipoNotificacao = "A",
                                Titulo = "CADASTRO DA VAGA " + vaga.VagaId,
                                Menssagem = "<p>A Empresa <strong>" + (a.Usuario ?? new Lib.Usuario()).Nome + "</strong></p><p>fechou uma vaga.</p><p>Cargo: <strong>" + vaga.Cargo.Nome + "</strong></p>"
                            });
                        }
                        catch (Exception ex)
                        {
                        }
                    });
                    return new
                    {
                        AlertType = 0,
                        Messages = new string[] { "Item salvo com sucesso!" },
                        Show = true,
                        Value = vaga.VagaId
                    };
                }
                else
                {
                    return new
                    {
                        AlertType = 1,
                        Messages = new string[] { "Desculpe isto é vergonhoso", "Não foi possível salvar esta configuração, tente mais tarde!" },
                        Show = true,
                        Value = 0
                    };
                }
            }
            catch (Exception ex)
            {
                return new
                {
                    AlertType = 1,
                    Messages = new string[] { ex.Message },
                    Show = true,
                    Value = 0
                };
            }
        }
    }
}